import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main{
    static int[]prime=new int[20005];
    static boolean st[]=new boolean[20005];
    static int cnt=0;
    static Set<Integer> set=new HashSet<>();
    static int num;
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int m=scan.nextInt();
        int []a=new int[n];
        int []b=new int[m];
        for(int i=0;i<n;i++){
            a[i]=scan.nextInt();
        }
        for(int i=0;i<m;i++){
            b[i]=scan.nextInt();
        }
        num=n+m;
        //筛素数
        creat();
        //遍历枚举
        int ans=0;//记录最终答案
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                int s=a[i]+b[j];
                if(s<=num){
                    //判断是不是素数
                    if(set.contains(s)){
                        ans++;
                        set.remove(s);
                    }
                }
            }
        }
        System.out.println(ans);
    }
    public static void creat(){
        //这是只需要筛选出num以内的素数即可，因为超过num的素数我们根本判断不到
        for(int i=2;i<=num;i++){
            if(!st[i]){
                prime[cnt++]=i;
                set.add(i);
            }
            for(int j=0;j<cnt;j++){
                if(i*prime[j]>num)break;
                st[i*prime[j]]=true;
                if(i%prime[j]==0)break;
            }
        }
    }
}
